package com.daily.DailyStudy.动态代理.CGLIB动态代理;

import com.daily.DailyStudy.动态代理.JDK原生动态代理.entity.UserProxy;
import org.springframework.cglib.proxy.Enhancer;

public class main {

    /**
     * CGLIB动态代理模拟
     * CGLIB动态代理的两个核心接口(类)分别是MethodInterceptor和Enhancer。
     * 是不是跟JDK动态代理很相似，用法也差不多。但CGLIB可以代理类和接口。注意：不能代理final类。
     *
     * */
    public static void main(String[] args) {
        UserProxy userProxy = new UserProxy();
        //下面这部分可以提取出来 公用
        MyInterceptor myInterceptor = new MyInterceptor(userProxy);
        userProxy = (UserProxy) Enhancer.create(userProxy.getClass(),myInterceptor);
        userProxy.setName("CGLIB名称");
        userProxy.setAge(27);
    }
}
